%
% Time-stamp: <2007年 04月 26日  15:27:35 ada>
%
\documentclass[12pt,a4paper]{ctexartutf8}
\usepackage{CJKutf8}
%\usepackage[T1]{fontenc}
\usepackage{graphicx}
\DeclareGraphicsRule{.png}{eps}{.bb}{}
\usepackage{color}
\definecolor{rltred}{rgb}{0.75,0,0}
\definecolor{rltgreen}{rgb}{0,0.5,0}
\definecolor{rltblue}{rgb}{0,0,0.75}
\usepackage[unicode,
                    dvipdfm,
                    colorlinks=true,
                    urlcolor=rltblue,       % \href{...}{...} external (URL)
                    filecolor=rltgreen,     % \href{...} local file
                    linkcolor=rltred       % \ref{...} and \pageref{...}
                    ]{hyperref}

\usepackage{pinyin}
\author{答治茜 (dazhiqian@gmail.com)}
\title{{\bf Ubuntu~平台上~Emacs 23~的安装配置 }\footnote{Copyright
    \copyright{ ada 2007}}}
\date{\today}

\begin{document}
  \hypersetup{
    pdfauthor={答治茜~~(dazhiqian@gmail.com)},
    pdftitle={\textbf{Ubuntu~上安装~Emacs 23~}},
    pdfsubject={如何配置~Ubuntu~平台上~Emacs 23~的xft字体引擎支持},
    pdfkeywords={emacs, xft, 中文},
    pdfpagemode={FullScreen}
  }
  
  \maketitle
  \begin{abstract}
    在~X~下使用~Emacs~时，如果字体配置不好，Emacs~就会显得十分丑陋。而作
    为~Emacs~的用户，每天相当长的时间都在盯着这个编辑器，如果字体不好看，对眼
    睛是一种严重的伤害。除非有严重的自虐倾向，没有人会喜欢这种感觉。

    如何在~Ubuntu~上安装~Emacs 23，又如何让~Emacs 23~支持~xft~曾困扰了我很久，
    最终完美解决了~Ubuntu~平台上~Emacs 23~的安装和配置，本文记录下了全程安装过
    程，以备今后查阅。
  \end{abstract}
  \tableofcontents{}
  \listoffigures{}
  \section{Ubuntu~如何使用中文字体？}
  由于~Linux~本身的中文字体设置就是个非常复杂的问题，所以本文仅试图用最简单的方
  法来实现~Ubuntu~上~Emacs 23~的中文~xft~支持。

  \subsection{两种字体系统}

  要实现~emacs~完美的中文显示，我们就得了解~Linux~环境中~X~服务器如何使用字体。
  实际上~XFree86/Xorg~包括了两种字体系统：核心字体系统和~xft~字体系统。核心字
  体系统历史悠久，传统的~X~程序使用的都是核心字体系统。但是随着人们对字体的显
  示要求越来越高，核心字体系统渐渐地有些落伍了。为了更好地支持矢量字体，实现抗
  锯齿 、子像素光栅化等高级特性，xft~字体系统开始浮出水面。


  由于~xft~字体系统所具有的种种优良特性，现代的~X~程序开始普遍采用~xft~字体系
  统绘制文字，逐渐开始取代核心字体系统。例如，基于~Qt/Gtk2~的程序采用的都是
  xft~字体系统。


  但是核心字体系统并没有完全退出历史舞台，很多老的~X~程序仍然采用的是核心字体
  系统，要把这些程序全部迁移到~xft~字体系统还要做许多工作。很不幸~emacs~就是这
  样一个程序。有一个正在开发中的~emacs~分支\textit{XFT\_JHD\_BRANCH}，就是试图让
  ~emacs~支持~xft~字体系统，目前这个分支的实现已经~merge~到~emacs 23~的代码中，
  所以我们只要~check out~最新的~emacs-unicode-2~代码，默认~emacs~就是支持~xft~
  了，我们要做的只是开启它，并配置合适的中文字体给xft引擎使用。

\subsection{安装字体}

由于目前的状况是两种字体系统并存，我们安装字体时就必须同时照顾到两者。有时候在
网上我们会看到一些字体安装经验介绍，比如：“安装字体太简单了，把字体丢到
\~/.fonts 下面，执行一下 fc-cache 命令，你就可以在~firefox~中使用这个字体了。”
实际上，这只是为~xft~字体系统安装字体的方法，按这种方法安装的字体，采用核心字
体系统的程序无法使用，也就是说 emacs 无法使用这样安装的字体\footnote{不过，现
  在~emacs-unicode-2~分支已经能够支持~xft~字体系统了。}。

下面我们介绍为核心字体系统安装字体的方法，很多人对这种方法记忆犹新，因为在几年
前，xft出现之前，为linux安装字体采用的都是这种方法。
\begin{itemize}
\item 第一步，拷贝字体。选择一个目录，把想用的字体拷贝到这个目录下。比如：

  \begin{itemize}
  \item    cp simsun.ttf /path/to/my/truetype/font/simsun.ttf
  \end{itemize}
  
\item 第二步，生成 fonts.scale 与 fonts.dir
  \begin{itemize}
  \item mkfontscale mkfontdir
  \end{itemize}
\item 第三步，修改 /etc/X11/xorg.conf (如果你在用 XFree86, 那就修改
  XF86Config-4)，加载~freetype~模块
\item 第四步，添加字体路径 
\end{itemize}

最后重新启动~X，这时候用~xlsfonts~命令应该能看到你安装的字体。


\textbf{注意:只有 xlsfonts 列出的字体，emacs 才能使用。}   

\section{Emacs又如何使用中文字体}

由于~emacs~是个支持多语言的程序，它支持很多种字符集，而一种字体一般只覆盖一个
或几个字符集，因此只用一种字体是无法显示~emacs~支持的所有文字的。因此在~emacs~
中需要设置~fontset，也就是多种字体的集合，或者叫做字体集。

如果我们不指定~fontset, 那么~emacs~会使用默认的~fontset-default~来显示字体。如
果你觉得这种字体不好看\footnote{中文显示极其丑陋 :-(}，就需要自己定义~fontset。
定义~fontset~有两种方式，一种是在\~/.emacs 中使
用~create-fontset-from-fontset-spec~函数，令一种是在 ~/.Xdefaults 中定义资源
\footnote{这两种字体的设置方法，都可以~Google~到。}。

\section{下载、编译、安装Emacs 23}

了解了上面这些，你是不已经迫不及待的想让你的~emacs~变的更漂亮一些呢，OK，开始
我们的美化之旅。

\subsection{下载~emacs~源代码}

让我们从~emacs~的代码库中~check out~出最新的源代码：
\begin{itemize}
\item \$ set CVS\_RSH="ssh"
\item \$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co -r
  emacs-unicode-2 emacs 
\end{itemize}

\subsection{编译、安装}

编译安装很简单，不过我在这里曾经花费了很多时间\footnote{一定要开
  启~--enable-font-backend~才能使用~xft~字体引擎}，感谢~Brep@SMTH~的指导，:-)

\begin{itemize}
\item \$./configure --enable-font-backend --with-xft --with-freetype --with-gtk
\end{itemize}

没有错误继续：

如果是第一次编译从~cvs Repository~中~check out~来的代码，请

\begin{itemize}
\item \$ make bootstrap
\item \$ sudo  make install
\end{itemize}
\section{配置、启动Emacs 23}

启动你的~emacs~，欣赏一下，打开一个中文文档看看效果如何\footnote{非常失望
  吧？}？ :-) ~估计你一分钟也忍受不了她的丑陋，关掉她吧。

选择一款你喜欢的字体，丢到~/usr/share/font/truetype/~下面，然后~fc-cache -f
-v~。

让~emacs~不要使用默认的~X~核心字体，转而使用~xft~字体引擎：
\begin{itemize}
\item \$ vi ~/.Xresources
\end{itemize}

加入如下内容：

\begin{verbatim}
Emacs.FontBackend: xft
Emacs.Font: Microsoft YaHei-15
Emacs.Foreground: Wheat
Emacs.Background: DarkSlateGray
Emacs.ScrollBars: nil
Emacs.Geometry: 126x44+0+0
Xft.dpi: 96
Xft.hinting: none
\end{verbatim}

上面我指定了使用~Microsoft YaHei~15号字体来显示，用下面的方法让你的更改生效：

\begin{itemize}
\item \$ xrdb -load ./.Xresources
\item \$ emacs --enable-font-backend
\end{itemize}

\section{中文输入法}

要在en\_US.UTF8环境下用~fcitx~输入法，你需要一个~hacke~r的方法：

修改~\textbf{/etc/gtk-2.0/gtk.immodules}~为：

"/usr/lib/gtk-2.0/2.10.0/immodules/im-xim.so"

"xim" "X Input Method" "gtk20" "/usr/share/locale" "en:ko:ja:th:zh"

\section{测试}

出来的效果参见\ref{fig:emacs}

\begin{figure}[H]
  \centering
  \includegraphics{emacs.png}
  \caption{emacs 23 xft 字体效果}
  \label{fig:emacs}
\end{figure}
\end{document}

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 
